Staircase codes are a type of product code that can be implemented in a forward error correction scheme. A staircase code includes a number of blocks arranged in a staircase pattern. Each block may include data bits and parity bits. In traditional staircase codes, each individual line and each individual column is a single component codeword comprising the data bits and parity bits. Component codewords span adjacent blocks to form valid codewords according to an error correcting code (ECC) scheme, such as a Bose-Chaudhuri-Hocquenghem (BCH) code. Because the blocks are arranged in a staircase pattern, component codewords may be formed in both the horizontal and vertical direction. That is, for any given data bit in a block, the bit is part of a horizontal codeword and a vertical codeword. Accordingly, each data bit is doubly encoded and may be corrected independently using two separate component codewords.